K-Means Clustering একটি জনপ্রিয় unsupervised machine learning অ্যালগরিদম যা ডেটাকে কনসেন্ট্রিক গ্রুপ বা clusters এ ভাগ করে। এই অ্যালগরিদমটি distance-based এবং centroid-based মেথডের মাধ্যমে কাজ করে, যেখানে প্রতিটি ডেটা পয়েন্ট একটি নির্দিষ্ট গ্রুপে অন্তর্ভুক্ত হয়, যার কেন্দ্র (centroid) কাছাকাছি থাকে। K-Means ক্লাস্টারিং একটি partitioning method যেখানে ডেটাকে নির্দিষ্ট সংখ্যক গ্রুপে ভাগ করা হয়।
K-Means Clustering এর প্রক্রিয়া:
- Centroid Initialization: K (number of clusters) সংখ্যক সেন্ট্রয়েড (cluster center) র্যান্ডমভাবে নির্বাচন করা হয়।
- Assigning Data Points to the Nearest Cluster: প্রতিটি ডেটা পয়েন্ট তার সবচেয়ে কাছের সেন্ট্রয়েডের সাথে ক্লাস্টারে অ্যাসাইন করা হয়।
- Recalculating the Centroids: প্রতিটি ক্লাস্টারের জন্য নতুন সেন্ট্রয়েডের অবস্থান পুনঃগণনা করা হয়, যা সেই ক্লাস্টারে অন্তর্ভুক্ত ডেটা পয়েন্টগুলির গড় মান।
- Repeat the Process: এই প্রক্রিয়া তখন পর্যন্ত চলতে থাকে যতক্ষণ না সেন্ট্রয়েডের অবস্থান পরিবর্তিত না হয় বা কিছু নির্দিষ্ট শর্ত পূর্ণ না হয় (যেমন, সর্বোচ্চ সংখ্যক ইটারেশন অর্জন)।
K-Means এর ধাপসমূহ:
- Randomly initialize K centroids.
- Assign each point to the nearest centroid based on Euclidean distance.
- Recompute centroids by calculating the mean of all points assigned to each centroid.
- Repeat steps 2 and 3 until the centroids no longer change or a set number of iterations is reached.
K-Means Algorithm Example (Python):
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Example data
data = {'x': [1, 2, 3, 8, 9, 10], 'y': [1, 1, 2, 8, 8, 9]}
df = pd.DataFrame(data)
# K-Means clustering
kmeans = KMeans(n_clusters=2, random_state=0)
df['cluster'] = kmeans.fit_predict(df[['x', 'y']])
# Plot the clusters
plt.scatter(df['x'], df['y'], c=df['cluster'], cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], color='red', marker='X', s=200)
plt.title('K-Means Clustering')
plt.show()
Elbow Method (এলবো মেথড)
Elbow Method হল একটি heuristic পদ্ধতি যা K-Means ক্লাস্টারিংয়ের জন্য সঠিক সংখ্যক ক্লাস্টার নির্বাচন করতে ব্যবহৃত হয়। এটি ক্লাস্টারের সংখ্যা (K) নির্বাচন করতে সহায়ক এবং K-এর জন্য একটি গ্রাফ তৈরি করে যেখানে within-cluster sum of squares (WCSS) (অথবা inertia) Y-অক্ষ বরাবর এবং K-এর সংখ্যা X-অক্ষ বরাবর প্রদর্শিত হয়।
Elbow Method এর প্রক্রিয়া:
- WCSS (Within-Cluster Sum of Squares) বা inertia হিসাব করা হয়। এটি প্রতিটি ক্লাস্টারের মধ্যে সমস্ত ডেটা পয়েন্টের সাথে তাদের সেন্ট্রয়েডের দূরত্বের বর্গফল যোগফল।
- বিভিন্ন K মানের জন্য WCSS হিসাব করা হয় এবং K বনাম WCSS এর একটি গ্রাফ আঁকা হয়।
- গ্রাফে যেখানে WCSS হ্রাসের হার ধীর হয়ে যায়, সেখানে elbow পয়েন্ট থাকে। এই elbow point হল সেই সংখ্যক ক্লাস্টার যেখানে সঠিক K নির্বাচন করা হয়, কারণ এরপর WCSS আরও কমাতে ক্লাস্টার সংখ্যা বাড়ানো খুব কার্যকরী হবে না।
Elbow Method Example (Python):
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Data (same as previous example)
X = df[['x', 'y']]
# Calculate WCSS for different values of K
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=0)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
# Plot the Elbow graph
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method for Optimal K')
plt.xlabel('Number of Clusters')
plt.ylabel('WCSS')
plt.show()
Output:
- Elbow পয়েন্টে গ্রাফে সোজা লাইন হালকা হয়ে যাবে, এটি K মানের জন্য সঠিক সংখ্যক ক্লাস্টারের প্রতিনিধিত্ব করে।
WCSS (Within-Cluster Sum of Squares) ব্যাখ্যা:
WCSS (within-cluster sum of squares) হল একটি পরিমাপ যা প্রতিটি ক্লাস্টারের সেন্ট্রয়েড থেকে ডেটা পয়েন্টগুলির দূরত্বের বর্গফল যোগফল। এটি কিভাবে ডেটা পয়েন্টগুলি তাদের নিজস্ব ক্লাস্টারে সন্নিবেশিত (compact) তা দেখায়। WCSS যত কম হবে, ক্লাস্টারগুলো তত ঘনিষ্ঠ (compact) হবে এবং সঠিক ক্লাস্টার সংখ্যা নির্বাচন করা সম্ভব হবে।
Elbow Method এর ব্যবহার:
- Optimal K নির্বাচন: Elbow Method দ্বারা সঠিক K নির্বাচন করা সম্ভব হয়, যেখানে WCSS-এর হ্রাস একটি নির্দিষ্ট সীমাতে এসে ধীর হয়ে যায়।
- Model Efficiency: Elbow Method K-এর সংখ্যাকে যতটা কমানো যায়, মডেলটি ততটাই কার্যকরী হতে পারে।
সারাংশ:
- K-Means Clustering একটি ক্লাস্টারিং অ্যালগরিদম যা ডেটাকে নির্দিষ্ট সংখ্যক গ্রুপে ভাগ করে।
- Elbow Method K-এর জন্য সঠিক সংখ্যক ক্লাস্টার নির্বাচন করতে সহায়ক, যেখানে WCSS-এর গ্রাফে একটি 'elbow' পয়েন্ট দেখতে পাওয়া যায়।
এই দুটি পদ্ধতি একসাথে ব্যবহার করে আপনি আপনার ডেটার জন্য সঠিক ক্লাস্টার সংখ্যা নির্বাচন করতে সক্ষম হবেন এবং ডেটা বিশ্লেষণ বা মেশিন লার্নিং মডেল তৈরিতে সাহায্য পেতে পারেন।
Read more